package com.lzc.springcloud.authserver.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
import org.springframework.security.web.authentication.logout.HttpStatusReturningLogoutSuccessHandler;

import javax.servlet.http.HttpServletResponse;

@Configuration
@EnableResourceServer
public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http
                .csrf().disable()
                .exceptionHandling()
                .authenticationEntryPoint((request, response, authException) -> response.sendError(HttpServletResponse.SC_UNAUTHORIZED))
                .and()
                .logout()
                .logoutUrl("/logout").permitAll().and()
                .authorizeRequests().antMatchers("/**/oauth/**", "/**/login.html", "/", "/index", "/**/logout", "/**/gologin.html").permitAll().and()
                .httpBasic().and()
                .formLogin()
                .loginPage("/identity/login.html").loginProcessingUrl("/identity/login.html")
                .successForwardUrl("/identity/gologin2").failureForwardUrl("/identity/login.html").and()
                .httpBasic();
    }
}
